@邪恶贝壳
3年前 提问
1个回答

怎么防御 JSON 劫持攻击

安全侠
3年前

防御 JSON 劫持攻击我们可以在JavaScript响应的开头部分插入无效或存在问题的JavaScript;即在针对包含敏感数据的JavaScript对象的请求中包括无法预测的参数;强制使用POST方法来检索JavaScript对象。

JSON 劫持

json劫持攻击又为”JSON Hijacking”,攻击过程有点类似于csrf,只不过csrf只管发送http请求,但是json-hijack的目的是获取敏感数据。

一些web应用会把一些敏感数据以json的形式返回到前端,如果仅仅通过cookie来判断请求是否合法,那么就可以利用类似csrf的手段,向目标服务器发送请求,以获得敏感数据。

比如下面的链接在已登录的情况下会返回json格式的用户信息:

http://www.test.com/userinfo

攻击者可以在自己的虚假页面中,加入如下标签:

<script src="http://www.test.com/userinfo"></script>

如果当前浏览器已经登录了http://www.test.com,并且cookie未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到json形式的用户敏感信息,因为script标签会自动解析json数据,生成对应的js对象。然后再通过

Object.prototype.__defineSetter__

这个函数来触发自己的恶意代码。

但是这个函数在当前的新版本chrome和firefox中都已经失效了。

防御 JSON 劫持攻击

1.在JavaScript响应的开头部分插入无效或存在问题的JavaScript;

2.即在针对包含敏感数据的JavaScript对象的请求中包括无法预测的参数;

3.强制使用POST方法来检索JavaScript对象。